using Aurora.TaskScheduler.Abstractions.Storage;

namespace Aurora.TaskScheduler.Storage.MySql;

public static class ScheduleSqlGenerate
{
    /// <summary>
    /// 构建表
    /// </summary>
    /// <param name="storage"></param>
    public static void Generate(IDataStorage storage)
    {
        string appTaskSql = @"
create table if not exists AppTask
(
    Id               varchar(50)   not null comment '任务编号'
        primary key,
    TaskName         varchar(500)  not null comment '任务名',
    GroupName        varchar(500)  not null comment '分组名',
    `Interval`       varchar(100)  not null comment '间隔时间',
    ApiUrl           varchar(500)  null comment '调用的API地址',
    `Describe`       text          null comment '任务描述',
    LastRunTime      datetime      null comment '最近一次运行时间',
    Status           int           not null comment '运行状态',
    TaskType         int           null comment '任务类型(1.DLL类型,2.API类型)',
    ApiRequestType   varchar(100)  null comment 'API访问类型(API类型) get post ',
    ApiAuthKey       varchar(500)  null comment '授权名(API类型)',
    ApiAuthValue     varchar(500)  null comment '授权值(API类型)',
    ApiParameter     varchar(5000) null comment 'API参数',
    DllClassName     varchar(500)  null comment 'DLL类型名',
    DllActionName    varchar(500)  null comment 'Dll方法名',
    CreatedTime      varchar(50)   null comment '创建时间',
    LastModifiedTime varchar(500)  null comment '最后修改时间',
    IntervalDescription varchar(500)  null comment '间隔时间的描述'
)
    comment 'app 的定时任务';


";
        storage.ExecuteCommand(appTaskSql);
        string appTaskLogSql = @"
create table if not exists AppTaskLog
(
    TaskId              varchar(50)  not null comment '任务编号',
    Id                  varchar(50)  not null comment '主键编号'
        primary key,
    TaskName            varchar(500) null comment '任务名',
    GroupName           varchar(500) null comment '分组名',
    BeginDate           datetime     null comment '任务开始时间',
    EndDate             datetime     null comment '任务结束时间',
    Msg                 text         null comment '任务执行结果',
    ElapsedMilliseconds bigint       null comment '耗时（毫秒）',
    Success             bit          null comment '是否成功',
    Exception           text         null comment '异常信息',
    CreateTime          datetime     null comment '创建时间'
)
    comment 'app task log';


";
        // 进行表的创建\
        storage.ExecuteCommand(appTaskLogSql);
    }
}